package com.qsxc.business.bean;


import lombok.AllArgsConstructor;
import lombok.Getter;

import javax.servlet.http.HttpServletResponse;

/**
 * 业务代码枚举
 */
@Getter
@AllArgsConstructor
public enum ResultCode {

    /**
     * 通用成功
     */
    CUSTOM_SUCCESS(1, "操作成功"),

    /**
     * 通用失败
     */
    CUSTOM_FAIL(0, "操作失败"),

    /**
     * 参数错误
     */
    PARAM_ERROR(1004, "参数错误"),

    /**
     * 业务异常
     */
    FAILURE(HttpServletResponse.SC_BAD_REQUEST, "业务异常"),

    /**
     * 请求未授权
     */
    UN_AUTHORIZED(HttpServletResponse.SC_UNAUTHORIZED, "请求未授权，请重新登录"),

    /**
     * 404 没找到请求
     */
    NOT_FOUND(HttpServletResponse.SC_NOT_FOUND, "404 没找到请求"),

    /**
     * 消息不能读取
     */
    MSG_NOT_READABLE(HttpServletResponse.SC_BAD_REQUEST, "消息不能读取"),

    /**
     * 不支持当前请求方法
     */
    METHOD_NOT_SUPPORTED(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "不支持当前请求方法"),

    /**
     * 不支持当前媒体类型
     */
    MEDIA_TYPE_NOT_SUPPORTED(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "不支持当前媒体类型"),

    /**
     * 请求被拒绝
     */
    REQ_REJECT(HttpServletResponse.SC_FORBIDDEN, "请求被拒绝"),

    /**
     * 服务器异常
     */
    INTERNAL_SERVER_ERROR(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "服务器异常"),

    /**
     * 缺少必要的请求参数
     */
    PARAM_MISS(HttpServletResponse.SC_BAD_REQUEST, "缺少必要的请求参数"),

    /**
     * 请求参数类型错误
     */
    PARAM_TYPE_ERROR(HttpServletResponse.SC_BAD_REQUEST, "请求参数类型错误"),

    /**
     * 请求参数绑定错误
     */
    PARAM_BIND_ERROR(HttpServletResponse.SC_BAD_REQUEST, "请求参数绑定错误"),

    /**
     * 参数校验失败
     */
    PARAM_VALID_ERROR(HttpServletResponse.SC_BAD_REQUEST, "参数校验失败"),

    /**
     * 未知错误
     */
    RET_UNKNOWN_ERROR(9999, "未知错误"),

    /**
     * 多终端登录
     */
    SSO_ERROR(8888, "多终端登录"),

    /**
     * 用户需重新登录 (用户授权到期或学习状态更新，需重新登录）
     */
    RE_LOGIN(1000, "1001:请重新登录"),
    /**
     * Token无效或失效
     */
    TOKEN_INVALID(1001, "1001:token失效"),

    /**
     * 用户未登录 (未登录的用户，请求需要登录接口时提示该错误）
     */
    NO_LOGIN(1002, "1001:用户未登录"),
    /**
     * 当前用户已在别的终端登录
     */
    LOGIN_OTHER(1003, "当前用户已在别的终端登录"),
    /**
     * 用户没有
     */
    NO_LOCAL_DB(1004, "1004:连接驾校本地数据库失败！"),
    /**
     * 已经报名驾校
     */
    SIGNUP_ALREADY(3001, "驾校已报名"),

    /**
     * 未支付成功
     */
    NO_PAY(4004, "未支付成功"),

    /**
     * 支付中
     */
    PAYING(4005, "支付中"),

    /**
     * 支付成功
     */
    PAY_SUCCESS(4006, "支付成功"),

    NEED_SIGN(4007, "需要电子签名"),

    /**
     * 用于判断请求是否有权限（购买的服务是否可用）
     */
    REQ_REJECT_NO_AUTH(4008, "请求被拒绝,没有购买服务或服务已过期");

    /**
     * code编码
     */
    final int code;
    /**
     * 中文信息描述
     */
    final String message;

}